package com.tpl.core.basedata.service;

import com.tpl.core.entity.sys.User;
import com.alibaba.fastjson.JSONObject;

import java.util.List;


/**
 * 说明 :权限接口
 * @author <a href="mailto:3380084@gmail.com">张坤雷</a>
 * @version 创建时间：2013-6-26 下午2:22:37 
 *
 */
public interface OperatorService {
	/**
	 * 
	 * 说明 :获取操作树
	 * @param key 树缓存KEY
	 * @param user
	 */
	List<? extends User> getMenu(String key, User user);
	/**
	 * 
	 * 说明 :写操作记录
	 * @param operator 菜单信息
	 * @param user 操作用户
	 * @param ip 操作用户IP
	 * @param type TODO
	 */
	void doWriteOperatorLog(User operator, User user, String ip, Integer type);
	
	/**
	 * 获取资源锁
	 * @param menuNo
	 * @return
	 */
	JSONObject getMenuLock(String menuNo);
	/**
	 * 给资源加锁
	 * @param id 
	 * @param menuNo
	 * @param userNo
	 * @param curDate
	 * @param lockType TODO
	 */
	void saveMenuLock(Long id, String menuNo, String userNo,String userName, String curDate, Integer lockType);
	/**
	 * 清除用户锁
	 * @param userNo
	 */
	void removeLock(String userNo,String menuNo);
	/**
	 * 降级资源锁
	 */
	void downLock(String menuNo,String curDate);
	/**
	 * 验证权限
	 * @param appId
	 * @param secret
	 * @param ip
	 * @param url TODO
	 * @return TODO
	 */
	Boolean checkAuth(String appId, String secret, String ip, String url);

}
